﻿using System;
using System.Collections.Generic;
using System.Linq;
using OSharp.Core.Dependency;
using OSharp.Demo.Dtos.System;
using OSharp.Demo.Models.System;
using OSharp.Utility.Data;

namespace OSharp.Demo.Contracts
{
    /// <summary>
    /// 系统管理模块
    /// </summary>
    public interface ISystemContract: IScopeDependency
    {
        #region 字典
        /// <summary>
        /// 字典
        /// </summary>
        IQueryable<DictType> DictTypes { get; }

        /// <summary>
        /// 添加字典信息
        /// </summary>
        /// <param name="inputDtos">要添加的字典信息DTO信息</param>
        /// <returns>业务操作结果</returns>
        OperationResult AddDictTypes(params DictTypeInputDto[] inputDtos);

        /// <summary>
        /// 更新字典信息
        /// </summary>
        /// <param name="inputDtos">包含更新信息的字典信息DTO信息</param>
        /// <returns>业务操作结果</returns>
        OperationResult EditDictTypes(params DictTypeInputDto[] inputDtos);

        /// <summary>
        /// 删除字典信息
        /// </summary>
        /// <param name="ids">要删除的字典信息编号</param>
        /// <returns>业务操作结果</returns>
        OperationResult DeleteDictTypes(params Guid[] ids);

        /// <summary>
        /// 添加字典项信息
        /// </summary>
        /// <param name="inputDtos">要添加的字典项信息DTO信息</param>
        /// <returns>业务操作结果</returns>
        OperationResult AddDictItems(params DictItemInputDto[] inputDtos);

        /// <summary>
        /// 更新字典项信息
        /// </summary>
        /// <param name="inputDtos">包含更新信息的字典项信息DTO信息</param>
        /// <returns>业务操作结果</returns>
        OperationResult EditDictItems(params DictItemInputDto[] inputDtos);

        /// <summary>
        /// 删除字典项信息
        /// </summary>
        /// <param name="ids">要删除的字典项信息编号</param>
        /// <returns>业务操作结果</returns>
        OperationResult DeleteDictItems(params Guid[] ids);
        OperationResult RestoreDictTypes(params Guid[] ids);
        OperationResult RecycleDictTypes(params Guid[] ids);
        #endregion
    }
}
